#ifndef CNC_BASE_PARAMETER_H
#define CNC_BASE_PARAMETER_H

#include "datatypeid.h"
#include <cstdint>

namespace cnc {

	namespace base {

		struct Parameter
		{
			virtual DataTypeID getDataType() = 0;
			virtual bool set(int8_t   value) = 0;
			virtual bool set(uint8_t  value) = 0;
			virtual bool set(int16_t  value) = 0;
			virtual bool set(uint16_t value) = 0;
			virtual bool set(int32_t  value) = 0;
			virtual bool set(uint32_t value) = 0;
			virtual bool set(int64_t  value) = 0;
			virtual bool set(uint64_t value) = 0;
			virtual bool set(float    value) = 0;
			virtual bool set(double   value) = 0;
			virtual bool get(int8_t   *value) = 0;
			virtual bool get(uint8_t  *value) = 0;
			virtual bool get(int16_t  *value) = 0;
			virtual bool get(uint16_t *value) = 0;
			virtual bool get(int32_t  *value) = 0;
			virtual bool get(uint32_t *value) = 0;
			virtual bool get(int64_t  *value) = 0;
			virtual bool get(uint64_t *value) = 0;
			virtual bool get(float    *value) = 0;
			virtual bool get(double   *value) = 0;
		};

	} // namespace base

} // namespace cnc

#endif
